using Drill.Extensibility;

namespace Drill.Configuration
{
    /// <summary>
    /// Interface used to access configuration data for dependency resolver configuration sources.
    /// </summary>
    public interface IConfigSourceConfiguration
    {
        /// <summary>
		/// Gets a value indicating whether this <see cref="IConfigSourceConfiguration"/> is enabled.
        /// </summary>
        /// <value><c>true</c> if enabled; otherwise, <c>false</c>.</value>
        bool Enabled { get; }

        /// <summary>
        /// Gets the key.
        /// </summary>
        /// <value>The key.</value>
        string Key { get; }

        /// <summary>
        /// Gets the configuration method used by the dependency resolver.
        /// </summary>
        /// <value>The configuration method used by the dependency resolver.</value>
		DrillBitConfigMethod Method { get; set; }

        /// <summary>
        /// Gets the value of the configuration source.
        /// </summary>
        /// <value>
        /// A string value that me be empty, null or a value that is 
        /// defined by the particular configuration method being used.
        /// </value>
        string Value { get; }
    }
}